package com.windaka.elements.utils;


import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;

/**
 * 数字格式化工具
 * @author song
 * @date 17:37 2021/11/6
**/
public class NumFormatUtils {

    private NumFormatUtils() {}

    /**
     * BigDecimal保留小数位数
     * @author song
     * @date 17:40 2021/11/6
     * @param number 传入的数值
     * @param dotLength 小数点后位数
    **/
    public static String format(BigDecimal number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        double doubleValue = number.setScale(dotLength, RoundingMode.HALF_UP).doubleValue();
        return nf.format(doubleValue);
    }
    
    /**
     * int 保留小数位数
     * @author song
     * @date 14:30 2022/3/17
     * @param number 传入的数值
     * @param dotLength 小数点后位数
    **/
    public static String format(int number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * long保留小数位数
     * @author song
     * @date 14:30 2022/3/17
     * @param number 传入的数值
     * @param dotLength 小数点后位数
    **/
    public static String format(Long number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * Float 保留小数位数
     * @author song
     * @date 14:30 2022/3/17
     * @param number 传入的数值
     * @param dotLength 小数点后位数
    **/
    public static String format(Float number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * Double 保留小数位数
     * @author song
     * @date 14:30 2022/3/17
     * @param number 传入的数值
     * @param dotLength 小数点后位数
    **/
    public static String format(Double number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(number);
    }

    /**
     * String 保留两位小数
     * @author song
     * @date 14:31 2022/3/17
     * @param number 传入的数值
     * @param dotLength 小数点后位数
    **/
    public static String format(String number, Integer dotLength) {
        if (CheckParamUtils.isNullOrEmpty(number)) {
            return "";
        }
        NumberFormat nf = NumberFormat.getNumberInstance();
        // 保留两位样式 不够补0
        nf.setMaximumFractionDigits(dotLength);
        nf.setMinimumFractionDigits(dotLength);
        return nf.format(Integer.parseInt(number));
    }
}
